/*
 * 
 * 
 */

package DigimonAdventure.Things;

import DigimonAdventure.Database.Direction;
import java.awt.Point;
import javax.swing.ImageIcon;

/**
 *
 * @author Kris Derril Siregar
 */
public abstract class AbstractThings {
    /**
     * icon menunjukkan gambar representatif dari objek ini jika ditampilkan di UI
     * realisasikan pada subclass
     */
    protected ImageIcon icon;
    /**
     * Posisi dari setiap benda yang ada di dunia digimon. <br>
     * Ukuran field adalah 40 x 20
     */
    protected Point titik;
    /**
     *konstruktor kosong
     *hanya menaruh di posisi 0,0
     */
    public AbstractThings() {
        titik = new Point(0,0);
    }
    
    public AbstractThings(int x,int y){
        titik = new Point(x, y);
    }
    /**
     * Mengembalikan posisi koordinat x
     * @return
     */
    public int getX(){return (int) (titik.getX()-1) * 20;}
    /**
     * mengembalikan poisi koordinat Y
     * @return
     */
    public int getY(){return (int) (titik.getY()-1) * 20;}
    /**
     * Mengembalikan icon/gambar dari setiap abstract things.
     *
     * @return icon
     */
    public abstract ImageIcon getImageIcon();
	/**
     * Menjabarkan bentuk gerakan dari masing-masing abstract things.
     * Setiap sub-class memiliki implementasi masing-masing.
     * Sebagai contoh : Obstacle tidak bisa bergerak sedangkan digimon bisa
     * @param arah
     */
    public abstract void move(Direction arah);


}
